package models

import (
	"time"
)

// SysDict 字典类型定义表
type SysDict struct {
	ID          int        `json:"id" gorm:"primarykey;comment:主键"`
	DictType    string     `json:"dict_type" gorm:"uniqueIndex;not null;size:50;comment:字典类型编码，如 unit、purchase_status"`
	DictName    string     `json:"dict_name" gorm:"not null;size:100;comment:字典类型名称"`
	Type        int        `json:"type" gorm:"comment:分类标签，例如 基础资料、业务状态、系统参数"`
	AllowExtend int        `json:"allow_extend" gorm:"default:0;comment:是否允许扩展字段（用于JSON字段）"`
	Status      int        `json:"status" gorm:"default:1;comment:启用状态：1启用，0禁用"`
	Remark      string     `json:"remark" gorm:"size:255;comment:备注"`
	CreateUser  string     `json:"create_user" gorm:"size:50;comment:创建人"`
	UpdateUser  string     `json:"update_user" gorm:"size:50;comment:最后更新人"`
	CreateTime  time.Time  `json:"create_time" gorm:"default:CURRENT_TIMESTAMP;comment:创建时间"`
	UpdateTime  time.Time  `json:"update_time" gorm:"default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;comment:更新时间"`
	DeletedAt   *time.Time `json:"deleted_at" gorm:"comment:删除时间"`
}

// TableName 指定表名
func (SysDict) TableName() string {
	return "sys_dict"
}

// SysDictData 字典项数据表
type SysDictData struct {
	ID         int        `json:"id" gorm:"primarykey;comment:主键"`
	DictType   string     `json:"dict_type" gorm:"not null;size:50;comment:对应字典类型编码"`
	DictCode   string     `json:"dict_code" gorm:"not null;size:100;comment:字典项编码，唯一"`
	DictName   string     `json:"dict_name" gorm:"not null;size:255;comment:字典项名称"`
	Sort       int        `json:"sort" gorm:"default:0;comment:排序值"`
	Status     int        `json:"status" gorm:"default:1;comment:状态：1启用，0禁用"`
	IsDefault  int        `json:"is_default" gorm:"default:0;comment:是否默认选项：1是，0否"`
	Color      string     `json:"color" gorm:"size:20;comment:颜色标记（如状态显示）"`
	Icon       string     `json:"icon" gorm:"size:100;comment:图标名/路径"`
	Tag        string     `json:"tag" gorm:"size:50;comment:标签/分组（如红色、推荐、系统等）"`
	ExtendJson JSONMap    `json:"extend_json" gorm:"type:json;comment:扩展数据，结构自由，如单位换算率等"`
	Remark     string     `json:"remark" gorm:"size:255;comment:备注"`
	Creator    string     `json:"creator" gorm:"size:50;comment:创建人"`
	CreatedAt  time.Time  `json:"created_at" gorm:"default:CURRENT_TIMESTAMP;comment:创建时间"`
	DeletedAt  *time.Time `json:"deleted_at" gorm:"comment:删除时间"`
}

// TableName 指定表名
func (SysDictData) TableName() string {
	return "sys_dict_data"
}

// SysDictType 字典类型标签表
type SysDictType struct {
	ID        int        `json:"id" gorm:"primarykey;comment:主键"`
	Name      string     `json:"name" gorm:"size:50;comment:名称"`
	CreatedAt *time.Time `json:"created_at" gorm:"comment:创建时间"`
}

// TableName 指定表名
func (SysDictType) TableName() string {
	return "sys_dict_type"
}
